package com.pureut.storage.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.pureut.storage.domain.AllotManagement;
import com.pureut.storage.dto.*;
import com.pureut.storage.export.AllotManagementExport;
import com.pureut.storage.vo.*;

import java.util.List;

/**
 * @author: CM
 * @date: 2023/1/10    21:31
 */
public interface AllotManagementService extends IService<AllotManagement> {

    /**
     * 新增调拨单
     * @param allotManagementVo
     * @return
     */
    boolean addAllot(AllotManagementVo allotManagementVo) throws Exception;

    /**
     * 调拨列表
     * @param allotManagementVo
     * @return
     */
    List<AllotManagementDto> getList(AllotManagementVo allotManagementVo);

    /**
     * 修改调拨单
     * @param allotManagementVo
     * @return
     */
    boolean updateAllot(AllotManagementVo allotManagementVo);

    /**
     * 查看调拨单
     * @param id
     * @return
     */
    AllotManagementDto view(Long id);

    /**
     * 删除单据
     * @param ids
     * @return
     */
    boolean deleteAllot(String ids);

    /**
     * 关节单据
     * @param allotManagementVo
     * @return
     */
    boolean closeAllot(AllotManagementVo allotManagementVo);

    /**
     * 调拨出库
     * @param allotDbVo
     * @return
     */
    AllotDbDto outAllot(AllotDbVo allotDbVo) throws Exception;

    /**
     * 调拨入库
     * @param allotDbVo
     * @return
     */
    AllotDbDto inAllot(AllotDbVo allotDbVo);

    /**
     * 拣货完成
     * @param id
     * @return
     */
    boolean finishAllot(Long id) throws Exception;

    /**
     * 拣货撤销
     * @param id
     * @return
     */
    boolean repealAllot(Long id);

    /**
     * 出库交接
     * @param pickingRestDbVo
     * @return
     */
    PickingRestHandoverDto overAllot(PickingRestDbVo pickingRestDbVo);

    /**
     * 拣货完成入库
     * @param id
     * @return
     */
    boolean finishAllotIn(Long id);

    /**
     * 导出调拨单信息
     * @param allotManagementVo
     * @return
     */
    List<AllotManagementExport> getInfoExport(AllotManagementVo allotManagementVo);

    /**
     * pda列表
     * @param allotPdaListVo
     * @return
     */
    List<AndroidPdaDto> allotPdaList(AllotPdaListVo allotPdaListVo);

    /**
     * Pda详情
     * @param allotPdaListVo
     * @return
     */
    AndroidPdaDto allotPdaView(AllotPdaListVo allotPdaListVo);

    /**
     * 品质回传单据检验结果
     * @param updateDocVo
     * @return
     */
    boolean allotUpdateStatus(UpdateDocVo updateDocVo);

    /**
     * 拣货方案
     * @param id
     * @return
     */
    SchemeDto point(Long id);
}
